#ifndef _GUI_APP_MAIN_H_
#define _GUI_APP_MAIN_H_

#include "lvgl.h"
#include "gui_rsrc.h"
#include "gui_hw.h"

/* 桌面布置设置 */
#define GUI_TOP_STATUS_PANEL_HEIGHT        (25)
#define GUI_TAB_APP_HOR_RES                (LV_HOR_RES)                    /* TAB APP 区域 的水平分辨率  */
#define GUI_TAB_APP_VER_RES                ((2 * GUI_TAB_APP_HOR_RES) / 5) /* TAB APP 区域 的竖直分辨率 2/5 HOR */
#define GUI_APP_ICON_SIZE                  (80)  /* APP ICON 尺寸 */
#define GUI_APP_LABLE_HEIGHT               (20)  /* APP lable 高度 */
#define GUI_APP_ICON_LABLE_GAP             (2)   /* APP ICON 和 lable 间隙 */
#define GUI_APP_ROW_NBR                    (3)   /* APP行数 */
#define GUI_APP_COL_NBR                    (6)   /* APP列数 */

#define GUI_APP_ROW_EXTRA_GAP              (22)  /* 行第一个图标和最后一个图标 和 容器的距离 */
#define GUI_APP_COL_EXTRA_GAP              (22)  /* 列第一个图标和最后一个图标 和 容器的距离 */
#define GUI_APP_ROW_GAP                    ((GUI_TAB_APP_HOR_RES - (GUI_APP_COL_NBR * GUI_APP_ICON_SIZE) - (GUI_APP_ROW_EXTRA_GAP * 2)) / \
                                            (GUI_APP_COL_NBR - 1))    /* 行方向图标间隔  */
#define GUI_APP_COL_GAP                    ((GUI_TAB_APP_VER_RES - (GUI_APP_ROW_NBR * GUI_APP_ICON_SIZE) - (GUI_APP_COL_EXTRA_GAP * 2)) / \
                                            (GUI_APP_ROW_NBR - 1))    /* 图标列间隔 */

#define GUI_APP_BOTTOM_PANEL_NBR            4

/* APP page 数设置 */
#define GUI_APP_TAB_NBR     3   /* 桌面tab个数 */
#define GUI_APP_NBR_PER_TAB (GUI_APP_ROW_NBR * GUI_APP_COL_NBR) /* 每个tab的app个数 */

/* APP 语言设置 */
#define GUI_APP_LNG_CN       0
#define GUI_APP_LNG_ENGLISH  1
#define GUI_APP_LNG_DEFAULT  GUI_APP_LNG_CN

/* 主题 */
typedef enum 
{
    GUI_THEME_MATERIAL = 0,
    GUI_THEME_NIGHT,
    GUI_THEME_ALIEN,
    GUI_THEME_ZEN,
    GUI_THEME_NEMO,
    GUI_THEME_MONO,
    GUI_THEME_DEFAULT,
    GUI_THEME_TEMPL
} GUI_THEME;

/* app的状态 */
enum
{
    GUI_APP_DESTROIED = 0, /* APP被销毁(返回销毁) */
    GUI_APP_CREATED,       /* APP被创建(点进运行) */
};

/* gui主窗口 */
RET_STATUS gui_app_mainwindow(void);

/* 创建桌面 */
void gui_create_desktop(void);

/* 标记APP的状态 */
typedef void (*app_status_ctrl_t)(uint8_t staus);

/* gui app 公共初始化 */
lv_obj_t * gui_app_common_init(lv_obj_t *parent, const char *title, app_status_ctrl_t app_status_ctrl);

/**********************
 *  GLOBAL PROTOTYPES
 **********************/
extern lv_obj_t * gui_app_current_obj;    /* 指向当前APP的 obj指针, NULL表示停留在桌面 */

#endif
